#ifndef __HD_TYPES_H__
#define __HD_TYPES_H__

/* 有符号类型定义 */
typedef int                hd_int32_t;       /* 有符号32位整形数类型 */
typedef short              hd_int16_t;       /* 有符号16位整形数类型 */
typedef char        	   hd_int8_t;        /* 有符号8位整形数类型 */
typedef void *             hd_ptr_t;       	 /* 指针类型 */
//typedef char *             hd_str_t;   	 /* 字符串类型，以NUL结尾。*/

/* 无符号类型定义 */
typedef unsigned int       hd_uint32_t;      /* 无符号32位整形数类型 */
typedef unsigned short     hd_uint16_t;      /* 无符号16位整形数类型 */
typedef unsigned char      hd_uint8_t;       /* 无符号8位整形数类型 */

/* 长整形类型定义 */
//typedef long               hd_long32_t;      /* 有符号32位长整形数类型 */
//typedef unsigned long      hd_ulong32_t;     /* 无符号32位长整形数类型 */
typedef unsigned long long hd_uint64_t;      /* 无符号64位整形数类型 */
typedef long long          hd_int64_t;       /* 有符号64位整形数类型 */


/* 浮点类型定义 */
typedef float              hd_float32_t;	 /* 32位浮点数类型 */
typedef double             hd_float64_t;	 /* 64位浮点数类型 */

/* 句柄类型 */
typedef void *             hd_handler_t;   	 /* 通用句柄类型 */

/* 空类型定义 */
typedef void               hd_void_t;    	 /* 空类型 */

typedef int				   hd_status_t;		 /* 返回状态类型 */

typedef int				   hd_bool_t;		 /* 布尔类型 */

typedef long               hd_ssize_t;       /* string size */

/**
 * This type is used as replacement to legacy C string, and used throughout
 * the library. By convention, the string is NOT null terminated.
 */
struct hd_str_t {
	/** Buffer pointer, which is by convention NOT null terminated. */
	char *ptr;
	/** The length of the string. */
	hd_ssize_t slen;
};

/*----------------------------------------------*
 * 宏定义                                       *
 *----------------------------------------------*/
/* Bool类型返回值 */
#define HD_SUCCESS		(0)			/* 成功 */
#define HD_FAILURE		(-1)		/* 失败 */


/* Bool类型真假 */
#define HD_TRUE			(1)			/* 真 */
#define HD_FALSE		(0)			/* 假 */

#define HD_INVALID_ID -1 /* 无效ID */

#ifndef NULL
    #define NULL    0L
#endif

#endif /* __HD_TYPES_H__ */
